// yunzai-doro-plugin/index.js
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import fs from 'node:fs';


const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const pluginName = path.basename(__dirname);

logger.info(`[${pluginName} Index] __dirname is: ${__dirname}`);


const appsPath = path.join(__dirname, 'apps');

// --- 配置文件路径定义 ---
const configDir = path.join(__dirname, 'config'); // 配置文件夹路径
const defaultConfigPath = path.join(configDir, 'defSet.yaml'); // 默认配置文件路径
const userConfigPath = path.join(configDir, 'config.yaml'); // 用户配置文件路径

// --- 自动复制配置文件的逻辑 ---
try {
  // 检查用户配置文件是否存在
  if (!fs.existsSync(userConfigPath)) {
    logger.info(`[${pluginName}] 未找到用户配置文件 ${userConfigPath}，尝试从默认配置复制...`);

    // 检查默认配置文件是否存在
    if (fs.existsSync(defaultConfigPath)) {
      // 确保配置目录存在，如果不存在则创建
      if (!fs.existsSync(configDir)) {
        fs.mkdirSync(configDir, { recursive: true }); // recursive: true 可以创建多层不存在的目录
        //logger.debug(`[${pluginName}] 已创建配置目录: ${configDir}`);
      }
      // 复制文件（使用同步方法，因为这是在启动时执行）
      fs.copyFileSync(defaultConfigPath, userConfigPath);
      logger.info(`[${pluginName}] 成功将 ${defaultConfigPath} 复制到 ${userConfigPath}`);
    } else {
      // 如果默认配置文件也不存在，则发出警告
      logger.warn(`[${pluginName}] 警告：默认配置文件 ${defaultConfigPath} 不存在，无法自动创建用户配置！`);
    }
  } else {
    // 如果用户配置文件已存在，则无需操作
    logger.debug(`[${pluginName}] 用户配置文件 ${userConfigPath} 已存在。`);
  }
} catch (error) {
  // 捕获并记录复制或检查过程中可能发生的任何错误
  logger.error(`[${pluginName}] 自动处理配置文件时出错:`, error);
}
// --- 配置文件处理结束 ---




logger.info(`---------`);
logger.info(`【${pluginName}】载入成功`);
logger.info(`   _____                       `);
logger.info(`  |  __ \\                      `);
logger.info(`  | |  | |_ __ __ _  __ _ ___ `);
logger.info(`  | |  | | '__/ _\` |/ _\` / __|`);
logger.info(`  | |__| | | | (_| | (_| \\__ \\`);
logger.info(`  |_____/|_|  \\__,_|\\__, |___/`);
logger.info(`                     __/ |    `);
logger.info(`                    |___/     `);
logger.info(`[原作者] ttq7 ATTomatoo(移植: 429)`);
logger.info(`[版本] js版本`);
logger.info(`[用法] /doro 开始, /选择 A 进行选择`);
logger.info(`---------`);

// --- 在这里添加可爱的 Doro ASCII Art ---
logger.info('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***++*********#%@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@@@#*++=-=+*###%*====-:----+++#++++++=---=*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@%*++*##*+==+%#*=.:-=*%%%#*=-+=-+##%%%-=*+=:=+=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@%+=*#%%+--==:-%*:=**+=:-#%%%%#=:#%%%#%:=%%#+=-=*==@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@*=*%%%+==*#+-*%%##==#%%%+:+%##%%*:+%#%=-%#-.-+##-++=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@%=+%%%#-+#%%%*#%%%%%%*#%##%%==%%%#%%-=%%:*#--:#+--#:+:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@#-*%%%#-#%%###%%%%%%%%%%#%%#%%==%%%#%%=-%:+-*%:=-.=-+.+:#***@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@*-#%%%#-%%%#%%#%%%%%%%%##%+#%%%@-=%%%##%--#:.*%*.-.+: :-+%%%-=@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@+-%%#%#-%%%%%*+%%%%%%%%%%%%+:%%%%%:*%####%:+%*==++==::= -@@@@-=@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@%=+%%#%%-*%%%%+:#%%%%%%%%%=#%%.*%%#%#:%##%#%#.#%%#***+++- :-+*+ %@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@%+-*%#%#%+=%#%%+ +%##%%%%%#%-*%%:+%#%#%-+%####%--#++++==:-=+-:@%#*:@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@#+-+%%#%%%%-#%#%=*#-%#%**%###%-*%#.:#%##%+-%####%#.-==--.-.:::=-%@@=-@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@+.=**=*%%%%*-%%#: -+.+%%+:%####-#%++%=*%%%*-%###%#%:.==-::: -=-+*-*+ =%@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@##*:#%%#%*=%*=.-*#=.-*%:+%#%=:*= =++-:=##-######%:+#*#+=+-*-+-:%+ +=.-#@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@%=%#%%%+:+*:=+**+=:.=+.*%*.:.:=:  .::.--%##%%#%:+%%%==*:#%++%@@.*@@+.=@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@%-%#%#==*@%:#*****#:-#==+*=:**:-##---##-%#####%:*%#%-:=:=@@@@%:+@@@@% -@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@-#%*-*@@%@+=##%##=-@@@@@@%%@.-=++==:-+=%######:#%%# +:*@@@@#.+@@@@@@# *@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@-*%-*@%%%%@#++++*%@@@@@@@@@#.##***#*::#%####%+:%%%:-@*=@@@+.#@@@@@@@@.:@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@+=%-+@%%%%%@@@@@@+@@@##@@@@@+=####*=-=%#####%:+%*:+@@@-#@= @@@@@@@@@@- @@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@:##-+%@@@%%%%@@@+=*==-++#@@@#++++#*-%%#%%#%*.*==%@@@@%-+.%@@@@@@@@@@= @@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@*=%#+=+*%@@@@@@@@%#%@@#%@@@@@@@@@*=%##%%#%# .=#@@@@@@@%*@@@@@@@@@@@@-.@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@==%%##*+==*#%@@@@@@@@@@@@@@%%%*=+*+:+%#%%:-%@@@@@@@@@@@@@@@@@@@@@@@.=@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@+=#%*#%#.:#************++*+-:-+*##:#%%#:+@@@@@@@@@@@@@@@@@@@@@@@@- %@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@#=** -**.-@@@@@@@@@@@@@@@@@@@@@@-*%%+-#@@@@@@@@@@@@@+*@@@@@@@@@:.%@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@*+ .#*++@@@@@@@@@@@@@@@@@@@%+-*#+=+@@@@@@@@@@@@@*::%@@@@@@@*.-@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@+ %@@@@*.*@@@@@@@@@@@@@@@+-+++#@@@@@@@@@@@@@*: :@@@@@@@@+ *@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@:.@@@@@+ .=*%@@@@@@@@@@@@@@@@@@@@@@@@@@%*=:== %@@@@@@@# *@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@.-@@@@@* :=::--==+@@@@@@@@@@@@@@%*+=-:-=*%@+ @@@@@@@@# #@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@% -@@@@@ +@@@%##* =@@@@@@@@@@@#.:-=+#%@@@@@% =@@@@@@@@:.@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@%-.+#%= %@@@@@@@# +@@@@@@@@@@# #@@@@@@@@@@@# -@@@@@@@- @@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@@@#+-==%@@@@@@@@@# -%@@@@@@@@% *@@@@@@@@@@@@%:.*@@@@* *@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-.=%@@@@@@* #@@@@@@@@@@@@@@*::===-#@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::=*#*=.=@@@@@@@@@@@@@@@@@%##@@@@@@@@@@@@@@@@@@@@@@@@@@\n' +
  '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*===+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');

// --- ASCII Art 结束 ---

// 使用 appsPath (带 's') 读取目录
const files = fs.readdirSync(appsPath).filter(file => file.endsWith('.js'));


let apps = {};
// 保持你原来的 for...of 循环，更清晰
for (const file of files) {
    try {
        // 使用 appsPath (带 's') 拼接文件路径
        const filePath = path.join(appsPath, file);
        logger.info(`[Doro冒险] 正在尝试导入: file://${filePath}`);
        const imported = await import(`file://${filePath}`);

        // 检查 default 导出
        if (imported.default && imported.default.prototype instanceof plugin) {
            // 键名建议与类名一致或文件名（无后缀）一致
            // 如果 doro-game.js 导出的是 DoroAdventure 类
            apps['DoroAdventure'] = imported.default; // 使用 default
            logger.info(`[${pluginName}] 已载入 (default export): ${file}`);
        } else {
            logger.error(`[${pluginName}] 文件 ${file} 未导出有效的默认插件类`);
        }
    } catch (err) {
        logger.error(`[${pluginName}] 载入失败: ${file}`);
        logger.error(err);
    }
}

export { apps };
